package com.xiongwei.io;

import java.io.File;
import java.io.IOException;
import java.lang.invoke.VarHandle;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

/**
 * 对于简单的小文件读写操作,可以使用Files工具类简化代码
 *
 * 需要特别注意的是，Files提供的读写方法，受内存限制，只能读写小文件，例如配置文件等，不可一次读入几个G的大文件。
 * 读写大型文件仍然要使用文件流，每次只读写一部分文件内容。
 *
 * @author XiongWei
 * @date 2021/1/11
 */
public class FileUse {

    public static void main(String[] args) throws IOException {
        //将文件读取为byte[]
        byte[] data = Files.readAllBytes(Paths.get("src/com/xiongwei/io/writeme.txt"));
        //将文件读取为String
        String str = Files.readString(Paths.get("src/com/xiongwei/io/writeme.txt"), StandardCharsets.UTF_8);
        System.out.println(str);
        //按行读取并返回每行内容
        List<String> lines = Files.readAllLines(Paths.get("src/com/xiongwei/io/io简介.txt"));
        lines.forEach(System.out::println);

        //写入文件并指定编码
        Files.writeString(Paths.get("src/com/xiongwei/io/writeme.txt"), "test write", StandardCharsets.UTF_8);
        String ss = Files.readString(Paths.get("src/com/xiongwei/io/writeme.txt"), StandardCharsets.UTF_8);
        System.out.println(ss);

        //按行写入文本
        List<String> strLines = new ArrayList<>();
        Files.write(Paths.get(""), lines);
    }
}
